/*
 * Copyright 2020-2024 Limbo Team (https://github.com/limbo-world).
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.limbo.flowjob.broker.core.schedule.scheduler.meta;

import com.cronutils.model.CronType;
import org.limbo.flowjob.api.constants.ScheduleType;
import org.limbo.flowjob.broker.core.schedule.ScheduleOption;

import java.time.Duration;

/**
 * @author Brozen
 * @since 2022-10-11
 */
public abstract class CronMetaTask extends LoopMetaTask {

    /**
     *
     * @param cron cron表达式
     * @param cronType cron表达式类型 {@link CronType}
     * @param metaTaskScheduler 调度器
     */
    protected CronMetaTask(String cron, String cronType, MetaTaskScheduler metaTaskScheduler) {
        this(Duration.ZERO, cron, cronType, metaTaskScheduler);
    }

    /**
     *
     * @param delay 延迟时间
     * @param cron cron表达式
     * @param cronType cron表达式类型 {@link CronType}
     * @param metaTaskScheduler 调度器
     */
    protected CronMetaTask(Duration delay, String cron, String cronType, MetaTaskScheduler metaTaskScheduler) {
        super(null, null,
                new ScheduleOption(ScheduleType.CRON, null, null, delay, null, cron, cronType),
                metaTaskScheduler
        );
    }

}
